//package com.tkmybatis.common;
//
//import cn.cmcc.es.exception.ErrorType;
//import cn.cmcc.es.exception.EsException;
//import cn.cmcc.es.feign.api.FeignExpertService;
//import cn.cmcc.es.feign.dto.SmapOrganInfoEs;
//import cn.cmcc.es.hfy.base.entity.CurrentUser;
//import cn.cmcc.es.hfy.base.entity.UserRole;
//import cn.cmcc.es.hfy.redis.RedisUtils;
//import cn.cmcc.es.hfy.utils.HttpUtil;
//import cn.cmcc.es.hfy.utils.SpringUtil;
//import cn.cmcc.es.hfy.utils.StringUtils;
//import cn.cmcc.es.old.service.FourHttpService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.annotation.PostConstruct;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.List;
//import java.util.Optional;
//
//@Slf4j
//public class UserUtils {
//
//
//    private static FourHttpService fourHttpService;
//
//    private static FeignExpertService feignExpertService;
//
//    @PostConstruct
//    public void init(){
//    	fourHttpService = SpringUtil.getBean(FourHttpService.class);
//    	feignExpertService = SpringUtil.getBean(FeignExpertService.class);
//     }
//
//	/**
//	 * 获取当前登录人
//	 * @return
//	 * @throws EsException
//	 */
//	public static CurrentUser getCurrentUser() throws EsException {
//		String token = getToken();
//
//		if(StringUtils.isNotBlank(token)) {
//			String key = GlobalConstant.EXPERT_SESSION_KEY+token;
//			CurrentUser currentUser = (CurrentUser) RedisUtils.get(key);
//			if(currentUser != null) {
//				return currentUser;
//			}
//		}
//		return null;
//	}
//
//	public static CurrentUser getCurrentUser(String token) throws EsException {
//		if(StringUtils.isNotBlank(token)) {
//			String key = GlobalConstant.EXPERT_SESSION_KEY+token;
//			CurrentUser currentUser = (CurrentUser) RedisUtils.get(key);
//			if(currentUser != null) {
//				return currentUser;
//			}
//		}
//		return null;
//	}
//
//	public static void removeCurrentUser(String token) throws EsException {
//		if(StringUtils.isNotBlank(token)) {
//			String key = GlobalConstant.EXPERT_SESSION_KEY+token;
//			RedisUtils.del(key);
//		}
//	}
//
//
//	public static String getCurrentUserCompanyId() throws EsException {
//		CurrentUser currentUser = getCurrentUser();
//		Optional.ofNullable(currentUser).orElseThrow(()->new EsException(ErrorType.AUTH_ERROR));
//        String companyId = currentUser.getCompanyId();
//        if(StringUtils.isBlank(companyId)){
//        	if(currentUser.getRoleType() != null) {
//        		if("10".equals(currentUser.getRoleType())||"1".equals(currentUser.getRoleType())){
//					CurrentUser user = fourHttpService.getCurrentUser(currentUser.getId());
//					if(user!=null){
//						companyId = user.getCompanyId();
//						user.setCompanyId(companyId);
//						setCurrentUser(user,getToken());
//					}
//				}
//        	}
//        }
//        return companyId;
//    }
//
//    public static String getCurrentUserCompanyName() throws EsException{
//        CurrentUser currentUser = getCurrentUser();
//        String companyName = currentUser.getCompanyName();
//        if(StringUtils.isBlank(companyName)){
//			if("10".equals(currentUser.getRoleType())||"1".equals(currentUser.getRoleType())){
//				String companyId = currentUser.getCompanyId();
//				if(StringUtils.isBlank(companyId)){
//					companyId = getCurrentUserCompanyId();
//					currentUser.setCompanyId(companyId);
//				}
//				SmapOrganInfoEs es = feignExpertService.getSmapOrganInfoEs(companyId).getData();
//				if(es!=null){
//					companyName=es.getOrganName();
//					currentUser.setCompanyName(companyName);
//				}
//				setCurrentUser(currentUser,getToken());
//			}
//        }
//        return companyName;
//    }
//
//    public static boolean hashRole(String roleCode) {
//    	CurrentUser currentUser = getCurrentUser();
//    	if(currentUser != null) {
//    		List<UserRole> userRoles = currentUser.getUserRoles();
//    		if(userRoles != null) {
//    			for(UserRole userRole : userRoles) {
//        			if(userRole.getRoleCode().equals(roleCode)) {
//        				return true;
//        			}
//        		}
//    		}
//    	}
//    	return false;
//    }
//
//    public static String setCurrentUser(CurrentUser user,String token) {
//		String key = GlobalConstant.EXPERT_SESSION_KEY+token;
//		RedisUtils.set(key,user,12*60*60);
//		return token;
//	}
//
//    public static void setCurrentUser(CurrentUser user) {
//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        if(attributes != null) {
//        	HttpServletRequest request = attributes.getRequest();
//            String token = HttpUtil.getToken(request);
//            setCurrentUser(user,token);
//            return;
//        }
//        throw new EsException("获取request失败！");
//    }
//
//	public static String getToken(){
//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        if(attributes != null) {
//        	HttpServletRequest request = attributes.getRequest();
//            return HttpUtil.getToken(request);
//        }
//        return null;
//    }
//
//	public static void redirect(String url){
//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        if(attributes != null) {
//        	HttpServletResponse response = attributes.getResponse();
//        	try {
//				response.sendRedirect(url);
//			} catch (IOException e) {
//				log.error("error:",e);
//			}
//        }
//    }
//
//	public static void main(String[] args) {
//		String sql="SELECT distinct 'sid='||t.supplier_id ||'@val_val@type=2' as BUSINESS_ID \n" +
//				"FROM business.spt_supp_supplier t where (t.company_type='QYFRLX6' or t.company_type='QYFRLX1')";
//
//	}
//}
